import WebSocketBase, { WebSocketWithId } from "/Frame/WebSocketBase";
/**
 * 自定义验证函数
 * @param info 客户端连接信息
 * @returns {boolean} 是否允许连接
 */
WebSocketBase.init((info) => {
    let url = info?.req?.url;
    let Params = new URLSearchParams(String(url).split('?')[1]);
    // 连接验证
    const token = Params.get('token');
    if (!token) return false;// 没有token直接拒绝
    // 字段验证通过（开始验证token）
    const result = G.tokenVerify(String(token));
    if (!result) return false;// token验证失败
    (info as any).req._data = result;// 保存到req对象上
    return true;
}).then(socket => {

    // WebSocketBase.sendTo('123456','uuid'); // 发送消息 给指定客户端
    // WebSocketBase.sendAll('123456',['uuid']); // 发送消息 给所有客户端 过滤指定uuid
    // WebSocketBase.close(['uuid']); // 关闭指定连接
    // WebSocketBase.terminate(['uuid']); // 终止指定连接

    socket.onConnection((ws, req) => {
        // ws.data = { account: (req as any)._data.account };// 可以给当前连接对象添加自定义属性
        ws.data = { name: '张三' };// 可以给当前连接对象添加自定义属性
        console.log('连接成功', ws.uuid);
    });

    socket.onClose((ws, code, reason) => {
        console.log('关闭连接', ws.data, code);
    });

    socket.onMessage((ws, message) => {
        console.log('收到消息', message.toString());
    });

    socket.onMethod('index', (ws, id, data) => {
        console.log('index_id: %s index_data: %s', id, data);
        return '哈哈哈接收到了';// 返回值
    });


    // socket.wss.clients 可以获取当前所有连接的客户端
    // 底层已经封装了 on 方法，这里可以不用再写（除非有自己需要处理的）
    // 监听连接事件
    // Socket.wss.on('connection', (ws, req) => {
    //     // 接收消息
    //     ws.on('message', (message) => {
    //         console.log('自己的: %s', message);
    //     });

    //     // 断开连接
    //     ws.on('close', function close() {
    //         console.log('Client disconnected.');
    //     });
    // });


});




